Feature: Book Genie Mode - Automated Testing with Detailed Reporting
File name: BookGenie.feature
Relative path: features/BookGenie.feature
Scenario Outline: Book Genie Response Validation with Citation Verification
Error: No book data extracted from BookGenie response.
at CustomWorld.(anonymous) (/home/runner/work/HC_Epub_Automation/HC_Epub_Automation/tests/steps/bookGenie.step.ts:46:15)
at /home/runner/work/HC_Epub_Automation/HC_Epub_Automation/tests/steps/bookGenie.step.ts:8:71
at __awaiter (/home/runner/work/HC_Epub_Automation/HC_Epub_Automation/tests/steps/bookGenie.step.ts:4:12)
at CustomWorld.(anonymous) (/home/runner/work/HC_Epub_Automation/HC_Epub_Automation/tests/steps/bookGenie.step.ts:59:12)
=== SCENARIO LOGS: Book Genie Response Validation with Citation Verification === [1:19:10 PM] Navigating to Creative Workspace login page [1:19:14 PM] Homepage visibility: false [1:19:14 PM] ℹ️ Clicking on mode selection dropdown [1:19:18 PM] ✅ Mode selection dropdown clicked successfully [1:19:18 PM] ℹ️ Checking visibility of mode: BookGenieQA [1:19:18 PM] ✅ Mode "BookGenieQA" is visible [1:19:18 PM] ℹ️ Selecting mode: BookGenieQA [1:19:18 PM] ✅ Mode "BookGenieQA" selected successfully [1:19:20 PM] ℹ️ Waiting for mode transition to complete [1:19:20 PM] ℹ️ Typing query: "Suggest 5 books on christmas" [1:19:50 PM] ⚠ ⚠Book Genie mode did not loaded [1:19:50 PM] ℹ️ Preparing to type query: "Suggest 5 books on christmas" [1:19:50 PM] ℹ️ Waiting for chat input to be visible [1:19:50 PM] ℹ️ Clearing chat input [1:19:50 PM] ℹ️ Typing query: "Suggest 5 books on christmas" [1:19:51 PM] ℹ️ Pressing Enter to submit query [1:19:51 PM] ✅ Query submitted successfully: "Suggest 5 books on christmas" [1:19:51 PM] ℹ️ Waiting for AI to complete thinking... [1:19:51 PM] 📋 WAITING FOR AI RESPONSE [1:19:51 PM] ℹ️ Looking for AI thinking indicator... [1:19:51 PM] ℹ️ Waiting for thinking indicator to appear (max 2 minutes) [1:19:53 PM] ✅ ✓ AI thinking indicator appeared - AI is processing the request [1:19:53 PM] ℹ️ Waiting for thinking indicator to disappear (max 5 minutes) [1:19:57 PM] ✅ ✓ AI thinking completed - Response should be ready [1:19:57 PM] ℹ️ 🔍 Checking for "None of the above, just" option... [1:19:57 PM] ℹ️ ✓ "None of the above, just" option not present - proceeding normally [1:19:57 PM] ℹ️ Allowing additional time for response rendering [1:20:00 PM] ✅ AI response wait process completed [1:20:00 PM] ℹ️ Validating response for query: "Suggest 5 books on christmas" [1:20:00 PM] 📋 VALIDATING RESPONSE FOR QUERY: "Suggest 5 books on christmas" [1:20:00 PM] ℹ️ Locating the latest response in chat [1:20:00 PM] ℹ️ Waiting for response to be visible (max 30 seconds) [1:20:00 PM] ✅ Response received - Length: 636 characters [1:20:00 PM] ℹ️ Response preview: Watch Me WorkInterpreting context for your query...That sounds like a lovely theme! To help you find... [1:20:00 PM] ℹ️ Extracting book data from response... [1:20:00 PM] 📋 EXTRACTING BOOK DATA FROM RESPONSE [1:20:00 PM] ℹ️ Locating BookGenie response container [1:20:00 PM] ℹ️ Extracting HTML content from response [1:20:00 PM] ℹ️ HTML content extracted - Length: 9176 characters [1:20:00 PM] ℹ️ Parsing HTML to extract book data [1:20:00 PM] ✅ SUCCESSFULLY EXTRACTED 0 BOOKS [1:20:00 PM] 📋 EXTRACTED BOOKS SUMMARY [1:20:00 PM] 📊 Total books extracted: 0 [1:20:00 PM] 📊 Average relevance score: 0% [1:20:00 PM] ✅ Extracted 0 books from response === END LOGS ===
Scenario Logs: Book Genie Response Validation with Citation Verification
Scenario Outline: Book Genie Response Validation with Citation Verification
CITATION VALIDATION DETAILED REPORT ================================================================================ BOOK: Araminta Spookie 3: Frognapped ------------------------------------------------------------ ✅ Reason 1: PASS (100%) ✅ Reason 2: PASS (95%) ❌ Reason 3: FAIL (0%) 📝 Reason: The book is part of the "Araminta Spookie" series... 📚 Citation: which includes the popular "Septimus Heap" series, establishing a rich context for this whimsical ta... ⚠️ Citation text not found in reason: "which includes the popular "Septimus Heap" series, establishing a rich context for this whimsical tale." BOOK: A Series of Unfortunate Events #1: The Bad Beginning ------------------------------------------------------------ ✅ Reason 1: PASS (100%) ✅ Reason 2: PASS (100%) ✅ Reason 3: PASS (100%) BOOK: Replay ------------------------------------------------------------ ✅ Reason 1: PASS (100%) ✅ Reason 2: PASS (100%) ✅ Reason 3: PASS (95%) SUMMARY: 8/9 reasons passed (88.9%) OVERALL STATUS: PASS
Citation Validation Summary: 8/9 passed
📊 Citation Validation Report
Generated on 10/21/2025, 1:24:30 PM
📖 Araminta Spookie 3: Frognapped
📖 A Series of Unfortunate Events #1: The Bad Beginning
📖 Replay
📈 Validation Summary
PER-BOOK AI VALIDATION REPORT - Query: "Suggest 3 books for childrens"
================================================================================
OVERALL RELEVANCE SCORE: 70%
STATUS: FAIL
BOOKS ANALYZED: 3
BOOK 1: "Araminta Spookie 3: Frognapped"
------------------------------------------------------------
Overall Score: 70%
SECTION SCORES:
Author Information: 70% - Analysis unavailable - API error
Publishing Date: 70% - Analysis unavailable - API error
Why Match Explanations: 70% - Analysis unavailable - API error
Relevance Scores: 70% - Analysis unavailable - API error
DETAILED FEEDBACK:
• AI analysis temporarily unavailable due to service overload
IMPROVEMENT SUGGESTIONS:
• Retry analysis when service is available
================================================================================
BOOK 2: "A Series of Unfortunate Events #1: The Bad Beginning"
------------------------------------------------------------
Overall Score: 70%
SECTION SCORES:
Author Information: 70% - Analysis unavailable - API error
Publishing Date: 70% - Analysis unavailable - API error
Why Match Explanations: 70% - Analysis unavailable - API error
Relevance Scores: 70% - Analysis unavailable - API error
DETAILED FEEDBACK:
• AI analysis temporarily unavailable due to service overload
IMPROVEMENT SUGGESTIONS:
• Retry analysis when service is available
================================================================================
BOOK 3: "Replay"
------------------------------------------------------------
Overall Score: 70%
SECTION SCORES:
Author Information: 70% - Analysis unavailable - API error
Publishing Date: 70% - Analysis unavailable - API error
Why Match Explanations: 70% - Analysis unavailable - API error
Relevance Scores: 70% - Analysis unavailable - API error
DETAILED FEEDBACK:
• AI analysis temporarily unavailable due to service overload
IMPROVEMENT SUGGESTIONS:
• Retry analysis when service is available
================================================================================
SUMMARY FEEDBACK:
----------------------------------------
• AI analysis service is temporarily overloaded
• Using fallback analysis with neutral scores
• Error: [GoogleGenerativeAI Error]: Error fetching from https://generativelanguage.googleapis.com/v1beta/models/gemini-2.5-pro:generateContent: [429 Too Many Requests] You exceeded your current quota, please check your plan and billing details. For more information on this error, head to: https://ai.google.dev/gemini-api/docs/rate-limits.
* Quota exceeded for metric: generativelanguage.googleapis.com/generate_content_free_tier_requests, limit: 2
Please retry in 22.090216902s. [{"@type":"type.googleapis.com/google.rpc.QuotaFailure","violations":[{"quotaMetric":"generativelanguage.googleapis.com/generate_content_free_tier_requests","quotaId":"GenerateRequestsPerMinutePerProjectPerModel-FreeTier","quotaDimensions":{"location":"global","model":"gemini-2.5-pro"},"quotaValue":"2"}]},{"@type":"type.googleapis.com/google.rpc.Help","links":[{"description":"Learn more about Gemini API quotas","url":"https://ai.google.dev/gemini-api/docs/rate-limits"}]},{"@type":"type.googleapis.com/google.rpc.RetryInfo","retryDelay":"22s"}]
OVERALL IMPROVEMENT SUGGESTIONS:
----------------------------------------
• Retry the analysis when Gemini API is less busy
• Consider running tests during off-peak hours
• Check Google AI status page for service updates
🤖 PER-BOOK AI Response Relevance Validation
Query: "Suggest 3 books for childrens"
Overall Relevance Score: 70%
Status: FAIL
Books Analyzed: 3
Individual Book Analyses
📖 Book 1: "Araminta Spookie 3: Frognapped" - 70%
Author Information: 70%
Analysis unavailable - API error
Publishing Date: 70%
Analysis unavailable - API error
Why Match Explanations: 70%
Analysis unavailable - API error
Relevance Scores: 70%
Analysis unavailable - API error
Improvement Suggestions:
📖 Book 2: "A Series of Unfortunate Events #1: The Bad Beginning" - 70%
Author Information: 70%
Analysis unavailable - API error
Publishing Date: 70%
Analysis unavailable - API error
Why Match Explanations: 70%
Analysis unavailable - API error
Relevance Scores: 70%
Analysis unavailable - API error
Improvement Suggestions:
📖 Book 3: "Replay" - 70%
Author Information: 70%
Analysis unavailable - API error
Publishing Date: 70%
Analysis unavailable - API error
Why Match Explanations: 70%
Analysis unavailable - API error
Relevance Scores: 70%
Analysis unavailable - API error
Improvement Suggestions:
Summary Feedback
• AI analysis service is temporarily overloaded
• Using fallback analysis with neutral scores
• Error: [GoogleGenerativeAI Error]: Error fetching from https://generativelanguage.googleapis.com/v1beta/models/gemini-2.5-pro:generateContent: [429 Too Many Requests] You exceeded your current quota, please check your plan and billing details. For more information on this error, head to: https://ai.google.dev/gemini-api/docs/rate-limits. * Quota exceeded for metric: generativelanguage.googleapis.com/generate_content_free_tier_requests, limit: 2 Please retry in 22.090216902s. [{"@type":"type.googleapis.com/google.rpc.QuotaFailure","violations":[{"quotaMetric":"generativelanguage.googleapis.com/generate_content_free_tier_requests","quotaId":"GenerateRequestsPerMinutePerProjectPerModel-FreeTier","quotaDimensions":{"location":"global","model":"gemini-2.5-pro"},"quotaValue":"2"}]},{"@type":"type.googleapis.com/google.rpc.Help","links":[{"description":"Learn more about Gemini API quotas","url":"https://ai.google.dev/gemini-api/docs/rate-limits"}]},{"@type":"type.googleapis.com/google.rpc.RetryInfo","retryDelay":"22s"}]
Overall Improvement Suggestions
=== SCENARIO LOGS: Book Genie Response Validation with Citation Verification ===
[1:20:09 PM] Navigating to Creative Workspace login page
[1:20:11 PM] Homepage visibility: false
[1:20:11 PM] ℹ️ Clicking on mode selection dropdown
[1:20:15 PM] ✅ Mode selection dropdown clicked successfully
[1:20:15 PM] ℹ️ Checking visibility of mode: BookGenieQA
[1:20:15 PM] ✅ Mode "BookGenieQA" is visible
[1:20:15 PM] ℹ️ Selecting mode: BookGenieQA
[1:20:15 PM] ✅ Mode "BookGenieQA" selected successfully
[1:20:17 PM] ℹ️ Waiting for mode transition to complete
[1:20:17 PM] ℹ️ Typing query: "Suggest 3 books for childrens"
[1:20:47 PM] ⚠ ⚠Book Genie mode did not loaded
[1:20:47 PM] ℹ️ Preparing to type query: "Suggest 3 books for childrens"
[1:20:47 PM] ℹ️ Waiting for chat input to be visible
[1:20:47 PM] ℹ️ Clearing chat input
[1:20:47 PM] ℹ️ Typing query: "Suggest 3 books for childrens"
[1:20:49 PM] ℹ️ Pressing Enter to submit query
[1:20:49 PM] ✅ Query submitted successfully: "Suggest 3 books for childrens"
[1:20:49 PM] ℹ️ Waiting for AI to complete thinking...
[1:20:49 PM] 📋 WAITING FOR AI RESPONSE
[1:20:49 PM] ℹ️ Looking for AI thinking indicator...
[1:20:49 PM] ℹ️ Waiting for thinking indicator to appear (max 2 minutes)
[1:20:51 PM] ✅ ✓ AI thinking indicator appeared - AI is processing the request
[1:20:51 PM] ℹ️ Waiting for thinking indicator to disappear (max 5 minutes)
[1:21:02 PM] ✅ ✓ AI thinking completed - Response should be ready
[1:21:02 PM] ℹ️ 🔍 Checking for "None of the above, just" option...
[1:21:03 PM] ℹ️ ✓ "None of the above, just" option not present - proceeding normally
[1:21:03 PM] ℹ️ Allowing additional time for response rendering
[1:21:06 PM] ✅ AI response wait process completed
[1:21:06 PM] ℹ️ Validating response for query: "Suggest 3 books for childrens"
[1:21:06 PM] 📋 VALIDATING RESPONSE FOR QUERY: "Suggest 3 books for childrens"
[1:21:06 PM] ℹ️ Locating the latest response in chat
[1:21:06 PM] ℹ️ Waiting for response to be visible (max 30 seconds)
[1:21:06 PM] ✅ Response received - Length: 2088 characters
[1:21:06 PM] ℹ️ Response preview: Watch Me WorkRetrieving Relevant Books for 'books suitable for children' in Book Summary ...Retrievi...
[1:21:06 PM] ℹ️ Extracting book data from response...
[1:21:06 PM] 📋 EXTRACTING BOOK DATA FROM RESPONSE
[1:21:06 PM] ℹ️ Locating BookGenie response container
[1:21:06 PM] ℹ️ Extracting HTML content from response
[1:21:06 PM] ℹ️ HTML content extracted - Length: 24264 characters
[1:21:06 PM] ℹ️ Parsing HTML to extract book data
[1:21:06 PM] ✅ SUCCESSFULLY EXTRACTED 3 BOOKS
[1:21:06 PM] 📋 EXTRACTED BOOKS SUMMARY
[1:21:06 PM] 📚 1. "Araminta Spookie 3: Frognapped" - Score: 100%%
[1:21:06 PM] 📚 2. "A Series of Unfortunate Events #1: The Bad Beginning" - Score: 100%%
[1:21:06 PM] 📚 3. "Replay" - Score: 100%%
[1:21:06 PM] 📊 Total books extracted: 3
[1:21:06 PM] 📊 Average relevance score: 100%
[1:21:06 PM] ✅ Extracted 3 books from response
[1:21:06 PM] ℹ️ Saving 3 books to Excel file: test_results/suggest_3_books_for_childrens.xlsx
[1:21:06 PM] 📋 SAVING BOOKS TO EXCEL FILE
[1:21:06 PM] ℹ️ Target file path: test_results/suggest_3_books_for_childrens.xlsx
[1:21:06 PM] ℹ️ Exporting 3 books to Excel format
[1:21:06 PM] ✅ Book data saved to: test_results/suggest_3_books_for_childrens.xlsx
[1:21:06 PM] 📊 File verified - Size: 16.83 KB
[1:21:06 PM] ✅ ✓ Excel file creation verified successfully
[1:21:06 PM] 📋 STARTING INDIVIDUAL BOOK VALIDATION (3 books) for query: "Suggest 3 books for childrens"
[1:21:06 PM] 📋 📚 VALIDATING BOOK 1: "Araminta Spookie 3: Frognapped"
[1:21:06 PM] ℹ️ Starting comprehensive book validation
[1:21:06 PM] ℹ️ Validating title: "Araminta Spookie 3: Frognapped" vs expected: "Araminta Spookie 3: Frognapped"
[1:21:06 PM] ✅ ✅ TITLE VALIDATION PASSED: "Araminta Spookie 3: Frognapped"
[1:21:06 PM] ℹ️ Validating score: 100% vs expected: 100%
[1:21:06 PM] ✅ ✅ SCORE VALIDATION PASSED: 100% (expected 100%)
[1:21:06 PM] ✅ ✅ PERFECT SCORE GAP VALIDATION: Book has 100% score and no gap mentioned
[1:21:06 PM] ℹ️ Why-match points: extracted 3 vs expected 3
[1:21:06 PM] ✅ ✅ WHY-MATCH VALIDATION PASSED: 3 points (expected 3)
[1:21:06 PM] ✅ 🎉 BOOK 1 VALIDATION: ALL CHECKS PASSED!
[1:21:06 PM] ℹ️ Book 1 validation completed
[1:21:06 PM] 📋 📚 VALIDATING BOOK 2: "A Series of Unfortunate Events #1: The Bad Beginning"
[1:21:06 PM] ℹ️ Starting comprehensive book validation
[1:21:06 PM] ℹ️ Validating title: "A Series of Unfortunate Events #1: The Bad Beginning" vs expected: "A Series of Unfortunate Events #1: The Bad Beginning"
[1:21:06 PM] ✅ ✅ TITLE VALIDATION PASSED: "A Series of Unfortunate Events #1: The Bad Beginning"
[1:21:06 PM] ℹ️ Validating score: 100% vs expected: 100%
[1:21:06 PM] ✅ ✅ SCORE VALIDATION PASSED: 100% (expected 100%)
[1:21:06 PM] ✅ ✅ PERFECT SCORE GAP VALIDATION: Book has 100% score and no gap mentioned
[1:21:06 PM] ℹ️ Why-match points: extracted 3 vs expected 3
[1:21:06 PM] ✅ ✅ WHY-MATCH VALIDATION PASSED: 3 points (expected 3)
[1:21:06 PM] ✅ 🎉 BOOK 2 VALIDATION: ALL CHECKS PASSED!
[1:21:06 PM] ℹ️ Book 2 validation completed
[1:21:06 PM] 📋 📚 VALIDATING BOOK 3: "Replay"
[1:21:06 PM] ℹ️ Starting comprehensive book validation
[1:21:06 PM] ℹ️ Validating title: "Replay" vs expected: "Replay"
[1:21:06 PM] ✅ ✅ TITLE VALIDATION PASSED: "Replay"
[1:21:06 PM] ℹ️ Validating score: 100% vs expected: 100%
[1:21:06 PM] ✅ ✅ SCORE VALIDATION PASSED: 100% (expected 100%)
[1:21:06 PM] ✅ ✅ PERFECT SCORE GAP VALIDATION: Book has 100% score and no gap mentioned
[1:21:06 PM] ℹ️ Why-match points: extracted 3 vs expected 3
[1:21:06 PM] ✅ ✅ WHY-MATCH VALIDATION PASSED: 3 points (expected 3)
[1:21:06 PM] ✅ 🎉 BOOK 3 VALIDATION: ALL CHECKS PASSED!
[1:21:06 PM] ℹ️ Book 3 validation completed
[1:21:06 PM] 📊 VALIDATION SUMMARY: 3/3 books passed
[1:21:06 PM] ✅ ALL BOOKS VALIDATED SUCCESSFULLY!
[1:21:06 PM] 📋 🔍 VALIDATING REASON-CITATION MATCHES
[1:21:06 PM] ℹ️ Starting citation validation process...
[1:21:06 PM] 📋 🚀 STARTING COMPLETE CITATION VALIDATION WORKFLOW
[1:21:06 PM] ℹ️ Step 1: Extracting books from AI response
[1:21:06 PM] 📋 EXTRACTING BOOK DATA FROM RESPONSE
[1:21:06 PM] ℹ️ Locating BookGenie response container
[1:21:06 PM] ℹ️ Extracting HTML content from response
[1:21:06 PM] ℹ️ HTML content extracted - Length: 24264 characters
[1:21:06 PM] ℹ️ Parsing HTML to extract book data
[1:21:06 PM] ✅ SUCCESSFULLY EXTRACTED 3 BOOKS
[1:21:06 PM] 📋 EXTRACTED BOOKS SUMMARY
[1:21:06 PM] 📚 1. "Araminta Spookie 3: Frognapped" - Score: 100%%
[1:21:06 PM] 📚 2. "A Series of Unfortunate Events #1: The Bad Beginning" - Score: 100%%
[1:21:06 PM] 📚 3. "Replay" - Score: 100%%
[1:21:06 PM] 📊 Total books extracted: 3
[1:21:06 PM] 📊 Average relevance score: 100%
[1:21:06 PM] ℹ️ Step 2: Extracting citation texts from book elements
[1:21:06 PM] 📋 📚 EXTRACTING CITATION TEXTS FROM BOOK ELEMENTS
[1:21:06 PM] ℹ️ Step 1: Waiting for main book section
[1:21:06 PM] ℹ️ Found 21 total accordion sections
[1:21:06 PM] ℹ️ Found individual book: "1. A Christmas Carol"
[1:21:06 PM] ℹ️ Found individual book: "2. Anne of Green Gables"
[1:21:06 PM] ℹ️ Found individual book: "3. Max Fernsby and the Infinite Toys"
[1:21:06 PM] ℹ️ Found individual book: "1. A Christmas Carol"
[1:21:06 PM] ℹ️ Found individual book: "2. Anne of Green Gables"
[1:21:06 PM] ℹ️ Found individual book: "3. Max Fernsby and the Infinite Toys"
[1:21:06 PM] ℹ️ Found individual book: "1. Araminta Spookie 3: Frognapped"
[1:21:06 PM] ℹ️ Found individual book: "2. A Series of Unfortunate Events #1: The Bad Beginning"
[1:21:06 PM] ℹ️ Found individual book: "3. Replay"
[1:21:06 PM] ℹ️ Processing 9 individual book sections
[1:21:06 PM] 📋 📖 PROCESSING BOOK 1: "A Christmas Carol"
[1:21:06 PM] ℹ️ Expanding book section: "A Christmas Carol"
[1:21:09 PM] ✅ Book section expanded: "A Christmas Carol"
[1:21:09 PM] ℹ️ Expanding "Why this book is the match" section for: "A Christmas Carol"
[1:21:12 PM] ✅ "Why this book is the match" section expanded for: "A Christmas Carol"
[1:21:12 PM] ℹ️ Found 3 citation buttons for "A Christmas Carol"
[1:21:12 PM] ℹ️ Extracting citation 1/3 for "A Christmas Carol"
[1:21:12 PM] ℹ️ Processing metadata citation 1 for "A Christmas Carol"
[1:21:13 PM] ℹ️ Clicking to OPEN metadata citation 1
[1:21:15 PM] ℹ️ Extracted citation text (first 100 chars): christmas books...
[1:21:15 PM] ℹ️ Clicking to CLOSE metadata citation 1
[1:21:17 PM] ✅ ✅ metadata citation 1 closed successfully
[1:21:17 PM] ℹ️ ✅ Citation 1 extracted successfully (length: 15)
[1:21:17 PM] ℹ️ Extracting citation 2/3 for "A Christmas Carol"
[1:21:17 PM] ℹ️ Processing metadata citation 2 for "A Christmas Carol"
[1:21:18 PM] ℹ️ Clicking to OPEN metadata citation 2
[1:21:20 PM] ℹ️ Extracted citation text (first 100 chars): JUVENILE FICTION: Holidays & Celebrations / Christmas & Advent...
[1:21:20 PM] ℹ️ Clicking to CLOSE metadata citation 2
[1:21:21 PM] ✅ ✅ metadata citation 2 closed successfully
[1:21:21 PM] ℹ️ ✅ Citation 2 extracted successfully (length: 62)
[1:21:21 PM] ℹ️ Extracting citation 3/3 for "A Christmas Carol"
[1:21:21 PM] ℹ️ Processing metadata citation 3 for "A Christmas Carol"
[1:21:23 PM] ℹ️ Clicking to OPEN metadata citation 3
[1:21:25 PM] ℹ️ Extracted citation text (first 100 chars): On a cold, blustery Christmas Eve, Ebenezer Scrooge toils in his countinghouse, unable to give a kin...
[1:21:25 PM] ℹ️ Clicking to CLOSE metadata citation 3
[1:21:26 PM] ✅ ✅ metadata citation 3 closed successfully
[1:21:26 PM] ℹ️ ✅ Citation 3 extracted successfully (length: 124)
[1:21:26 PM] ℹ️ Collapsing book section: "A Christmas Carol"
[1:21:28 PM] ✅ Book section collapsed: "A Christmas Carol"
[1:21:28 PM] ✅ ✅ Completed processing "A Christmas Carol" - 3 citations extracted
[1:21:28 PM] 📋 📖 PROCESSING BOOK 2: "Anne of Green Gables"
[1:21:28 PM] ℹ️ Expanding book section: "Anne of Green Gables"
[1:21:31 PM] ✅ Book section expanded: "Anne of Green Gables"
[1:21:31 PM] ℹ️ Expanding "Why this book is the match" section for: "Anne of Green Gables"
[1:21:34 PM] ✅ "Why this book is the match" section expanded for: "Anne of Green Gables"
[1:21:34 PM] ℹ️ Found 3 citation buttons for "Anne of Green Gables"
[1:21:34 PM] ℹ️ Extracting citation 1/3 for "Anne of Green Gables"
[1:21:34 PM] ℹ️ Processing metadata citation 1 for "Anne of Green Gables"
[1:21:35 PM] ℹ️ Clicking to OPEN metadata citation 1
[1:21:37 PM] ℹ️ Extracted citation text (first 100 chars): JUVENILE FICTION: Classics...
[1:21:37 PM] ℹ️ Clicking to CLOSE metadata citation 1
[1:21:39 PM] ✅ ✅ metadata citation 1 closed successfully
[1:21:39 PM] ℹ️ ✅ Citation 1 extracted successfully (length: 26)
[1:21:39 PM] ℹ️ Extracting citation 2/3 for "Anne of Green Gables"
[1:21:39 PM] ℹ️ Processing metadata citation 2 for "Anne of Green Gables"
[1:21:40 PM] ℹ️ Clicking to OPEN metadata citation 2
[1:21:42 PM] ℹ️ Extracted citation text (first 100 chars): classic literature...
[1:21:42 PM] ℹ️ Clicking to CLOSE metadata citation 2
[1:21:43 PM] ✅ ✅ metadata citation 2 closed successfully
[1:21:43 PM] ℹ️ ✅ Citation 2 extracted successfully (length: 18)
[1:21:43 PM] ℹ️ Extracting citation 3/3 for "Anne of Green Gables"
[1:21:43 PM] ℹ️ Processing metadata citation 3 for "Anne of Green Gables"
[1:21:44 PM] ℹ️ Clicking to OPEN metadata citation 3
[1:21:46 PM] ℹ️ Extracted citation text (first 100 chars): Marilla and Mathew Cuthbert had planned to adopt a boy to help out around Green Gables farm....
[1:21:46 PM] ℹ️ Clicking to CLOSE metadata citation 3
[1:21:48 PM] ✅ ✅ metadata citation 3 closed successfully
[1:21:48 PM] ℹ️ ✅ Citation 3 extracted successfully (length: 92)
[1:21:48 PM] ℹ️ Collapsing book section: "Anne of Green Gables"
[1:21:50 PM] ✅ Book section collapsed: "Anne of Green Gables"
[1:21:50 PM] ✅ ✅ Completed processing "Anne of Green Gables" - 3 citations extracted
[1:21:50 PM] 📋 📖 PROCESSING BOOK 3: "Max Fernsby and the Infinite Toys"
[1:21:50 PM] ℹ️ Expanding book section: "Max Fernsby and the Infinite Toys"
[1:21:53 PM] ✅ Book section expanded: "Max Fernsby and the Infinite Toys"
[1:21:53 PM] ℹ️ Expanding "Why this book is the match" section for: "Max Fernsby and the Infinite Toys"
[1:21:56 PM] ✅ "Why this book is the match" section expanded for: "Max Fernsby and the Infinite Toys"
[1:21:56 PM] ℹ️ Found 3 citation buttons for "Max Fernsby and the Infinite Toys"
[1:21:56 PM] ℹ️ Extracting citation 1/3 for "Max Fernsby and the Infinite Toys"
[1:21:56 PM] ℹ️ Processing metadata citation 1 for "Max Fernsby and the Infinite Toys"
[1:21:57 PM] ℹ️ Clicking to OPEN metadata citation 1
[1:21:59 PM] ℹ️ Extracted citation text (first 100 chars): JUVENILE FICTION: Holidays & Celebrations / Christmas & Advent...
[1:21:59 PM] ℹ️ Clicking to CLOSE metadata citation 1
[1:22:00 PM] ✅ ✅ metadata citation 1 closed successfully
[1:22:00 PM] ℹ️ ✅ Citation 1 extracted successfully (length: 62)
[1:22:00 PM] ℹ️ Extracting citation 2/3 for "Max Fernsby and the Infinite Toys"
[1:22:00 PM] ℹ️ Processing metadata citation 2 for "Max Fernsby and the Infinite Toys"
[1:22:01 PM] ℹ️ Clicking to OPEN metadata citation 2
[1:22:04 PM] ℹ️ Extracted citation text (first 100 chars): christmas coloring book...
[1:22:04 PM] ℹ️ Clicking to CLOSE metadata citation 2
[1:22:05 PM] ✅ ✅ metadata citation 2 closed successfully
[1:22:05 PM] ℹ️ ✅ Citation 2 extracted successfully (length: 23)
[1:22:05 PM] ℹ️ Extracting citation 3/3 for "Max Fernsby and the Infinite Toys"
[1:22:05 PM] ℹ️ Processing metadata citation 3 for "Max Fernsby and the Infinite Toys"
[1:22:06 PM] ℹ️ Clicking to OPEN metadata citation 3
[1:22:08 PM] ℹ️ Extracted citation text (first 100 chars): a charming, hilarious, illustrated middle grade Christmas tale about three friends who join forces w...
[1:22:08 PM] ℹ️ Clicking to CLOSE metadata citation 3
[1:22:10 PM] ✅ ✅ metadata citation 3 closed successfully
[1:22:10 PM] ℹ️ ✅ Citation 3 extracted successfully (length: 147)
[1:22:10 PM] ℹ️ Collapsing book section: "Max Fernsby and the Infinite Toys"
[1:22:11 PM] ✅ Book section collapsed: "Max Fernsby and the Infinite Toys"
[1:22:11 PM] ✅ ✅ Completed processing "Max Fernsby and the Infinite Toys" - 3 citations extracted
[1:22:11 PM] 📋 📖 PROCESSING BOOK 4: "A Christmas Carol"
[1:22:11 PM] ℹ️ Expanding book section: "A Christmas Carol"
[1:22:14 PM] ✅ Book section expanded: "A Christmas Carol"
[1:22:14 PM] ℹ️ "Why this book is the match" section already expanded for: "A Christmas Carol"
[1:22:14 PM] ℹ️ Found 3 citation buttons for "A Christmas Carol"
[1:22:14 PM] ℹ️ Extracting citation 1/3 for "A Christmas Carol"
[1:22:14 PM] ℹ️ Processing metadata citation 1 for "A Christmas Carol"
[1:22:16 PM] ℹ️ Clicking to OPEN metadata citation 1
[1:22:18 PM] ℹ️ Extracted citation text (first 100 chars): christmas books...
[1:22:18 PM] ℹ️ Clicking to CLOSE metadata citation 1
[1:22:19 PM] ✅ ✅ metadata citation 1 closed successfully
[1:22:19 PM] ℹ️ ✅ Citation 1 extracted successfully (length: 15)
[1:22:19 PM] ℹ️ Extracting citation 2/3 for "A Christmas Carol"
[1:22:19 PM] ℹ️ Processing metadata citation 2 for "A Christmas Carol"
[1:22:20 PM] ℹ️ Clicking to OPEN metadata citation 2
[1:22:22 PM] ℹ️ Extracted citation text (first 100 chars): JUVENILE FICTION: Holidays & Celebrations / Christmas & Advent...
[1:22:22 PM] ℹ️ Clicking to CLOSE metadata citation 2
[1:22:24 PM] ✅ ✅ metadata citation 2 closed successfully
[1:22:24 PM] ℹ️ ✅ Citation 2 extracted successfully (length: 62)
[1:22:24 PM] ℹ️ Extracting citation 3/3 for "A Christmas Carol"
[1:22:24 PM] ℹ️ Processing metadata citation 3 for "A Christmas Carol"
[1:22:25 PM] ℹ️ Clicking to OPEN metadata citation 3
[1:22:27 PM] ℹ️ Extracted citation text (first 100 chars): Ebenezer Scrooge toils in his countinghouse, unable to give a kind word to a single soul...
[1:22:27 PM] ℹ️ Clicking to CLOSE metadata citation 3
[1:22:28 PM] ✅ ✅ metadata citation 3 closed successfully
[1:22:28 PM] ℹ️ ✅ Citation 3 extracted successfully (length: 88)
[1:22:28 PM] ℹ️ Collapsing book section: "A Christmas Carol"
[1:22:30 PM] ✅ Book section collapsed: "A Christmas Carol"
[1:22:30 PM] ✅ ✅ Completed processing "A Christmas Carol" - 3 citations extracted
[1:22:30 PM] 📋 📖 PROCESSING BOOK 5: "Anne of Green Gables"
[1:22:30 PM] ℹ️ Expanding book section: "Anne of Green Gables"
[1:22:33 PM] ✅ Book section expanded: "Anne of Green Gables"
[1:22:33 PM] ℹ️ "Why this book is the match" section already expanded for: "Anne of Green Gables"
[1:22:33 PM] ℹ️ Found 3 citation buttons for "Anne of Green Gables"
[1:22:33 PM] ℹ️ Extracting citation 1/3 for "Anne of Green Gables"
[1:22:33 PM] ℹ️ Processing metadata citation 1 for "Anne of Green Gables"
[1:22:34 PM] ℹ️ Clicking to OPEN metadata citation 1
[1:22:36 PM] ℹ️ Extracted citation text (first 100 chars): JUVENILE FICTION: Classics...
[1:22:36 PM] ℹ️ Clicking to CLOSE metadata citation 1
[1:22:38 PM] ✅ ✅ metadata citation 1 closed successfully
[1:22:38 PM] ℹ️ ✅ Citation 1 extracted successfully (length: 26)
[1:22:38 PM] ℹ️ Extracting citation 2/3 for "Anne of Green Gables"
[1:22:38 PM] ℹ️ Processing metadata citation 2 for "Anne of Green Gables"
[1:22:39 PM] ℹ️ Clicking to OPEN metadata citation 2
[1:22:41 PM] ℹ️ Extracted citation text (first 100 chars): classic literature...
[1:22:41 PM] ℹ️ Clicking to CLOSE metadata citation 2
[1:22:42 PM] ✅ ✅ metadata citation 2 closed successfully
[1:22:42 PM] ℹ️ ✅ Citation 2 extracted successfully (length: 18)
[1:22:42 PM] ℹ️ Extracting citation 3/3 for "Anne of Green Gables"
[1:22:42 PM] ℹ️ Processing metadata citation 3 for "Anne of Green Gables"
[1:22:43 PM] ℹ️ Clicking to OPEN metadata citation 3
[1:22:45 PM] ℹ️ Extracted citation text (first 100 chars): Marilla and Mathew Cuthbert had planned to adopt a boy to help out around Green Gables farm....
[1:22:45 PM] ℹ️ Clicking to CLOSE metadata citation 3
[1:22:47 PM] ✅ ✅ metadata citation 3 closed successfully
[1:22:47 PM] ℹ️ ✅ Citation 3 extracted successfully (length: 92)
[1:22:47 PM] ℹ️ Collapsing book section: "Anne of Green Gables"
[1:22:48 PM] ✅ Book section collapsed: "Anne of Green Gables"
[1:22:48 PM] ✅ ✅ Completed processing "Anne of Green Gables" - 3 citations extracted
[1:22:48 PM] 📋 📖 PROCESSING BOOK 6: "Max Fernsby and the Infinite Toys"
[1:22:48 PM] ℹ️ Expanding book section: "Max Fernsby and the Infinite Toys"
[1:22:52 PM] ✅ Book section expanded: "Max Fernsby and the Infinite Toys"
[1:22:52 PM] ℹ️ "Why this book is the match" section already expanded for: "Max Fernsby and the Infinite Toys"
[1:22:52 PM] ℹ️ Found 3 citation buttons for "Max Fernsby and the Infinite Toys"
[1:22:52 PM] ℹ️ Extracting citation 1/3 for "Max Fernsby and the Infinite Toys"
[1:22:52 PM] ℹ️ Processing metadata citation 1 for "Max Fernsby and the Infinite Toys"
[1:22:53 PM] ℹ️ Clicking to OPEN metadata citation 1
[1:22:55 PM] ℹ️ Extracted citation text (first 100 chars): JUVENILE FICTION: Holidays & Celebrations / Christmas & Advent...
[1:22:55 PM] ℹ️ Clicking to CLOSE metadata citation 1
[1:22:56 PM] ✅ ✅ metadata citation 1 closed successfully
[1:22:56 PM] ℹ️ ✅ Citation 1 extracted successfully (length: 62)
[1:22:56 PM] ℹ️ Extracting citation 2/3 for "Max Fernsby and the Infinite Toys"
[1:22:56 PM] ℹ️ Processing metadata citation 2 for "Max Fernsby and the Infinite Toys"
[1:22:57 PM] ℹ️ Clicking to OPEN metadata citation 2
[1:22:59 PM] ℹ️ Extracted citation text (first 100 chars): christmas...
[1:22:59 PM] ℹ️ Clicking to CLOSE metadata citation 2
[1:23:01 PM] ✅ ✅ metadata citation 2 closed successfully
[1:23:01 PM] ℹ️ ✅ Citation 2 extracted successfully (length: 9)
[1:23:01 PM] ℹ️ Extracting citation 3/3 for "Max Fernsby and the Infinite Toys"
[1:23:01 PM] ℹ️ Processing metadata citation 3 for "Max Fernsby and the Infinite Toys"
[1:23:02 PM] ℹ️ Clicking to OPEN metadata citation 3
[1:23:04 PM] ℹ️ Extracted citation text (first 100 chars): a charming, hilarious, illustrated middle grade Christmas tale about three friends who join forces w...
[1:23:04 PM] ℹ️ Clicking to CLOSE metadata citation 3
[1:23:05 PM] ✅ ✅ metadata citation 3 closed successfully
[1:23:05 PM] ℹ️ ✅ Citation 3 extracted successfully (length: 147)
[1:23:05 PM] ℹ️ Collapsing book section: "Max Fernsby and the Infinite Toys"
[1:23:07 PM] ✅ Book section collapsed: "Max Fernsby and the Infinite Toys"
[1:23:07 PM] ✅ ✅ Completed processing "Max Fernsby and the Infinite Toys" - 3 citations extracted
[1:23:07 PM] 📋 📖 PROCESSING BOOK 7: "Araminta Spookie 3: Frognapped"
[1:23:07 PM] ℹ️ Expanding book section: "Araminta Spookie 3: Frognapped"
[1:23:10 PM] ✅ Book section expanded: "Araminta Spookie 3: Frognapped"
[1:23:10 PM] ℹ️ "Why this book is the match" section already expanded for: "Araminta Spookie 3: Frognapped"
[1:23:10 PM] ℹ️ Found 3 citation buttons for "Araminta Spookie 3: Frognapped"
[1:23:10 PM] ℹ️ Extracting citation 1/3 for "Araminta Spookie 3: Frognapped"
[1:23:10 PM] ℹ️ Processing metadata citation 1 for "Araminta Spookie 3: Frognapped"
[1:23:11 PM] ℹ️ Clicking to OPEN metadata citation 1
[1:23:13 PM] ℹ️ Extracted citation text (first 100 chars): JUVENILE FICTION...
[1:23:13 PM] ℹ️ Clicking to CLOSE metadata citation 1
[1:23:15 PM] ✅ ✅ metadata citation 1 closed successfully
[1:23:15 PM] ℹ️ ✅ Citation 1 extracted successfully (length: 16)
[1:23:15 PM] ℹ️ Extracting citation 2/3 for "Araminta Spookie 3: Frognapped"
[1:23:15 PM] ℹ️ Processing metadata citation 2 for "Araminta Spookie 3: Frognapped"
[1:23:16 PM] ℹ️ Clicking to OPEN metadata citation 2
[1:23:18 PM] ℹ️ Extracted citation text (first 100 chars): chapter books for kids ages 6-10...
[1:23:18 PM] ℹ️ Clicking to CLOSE metadata citation 2
[1:23:19 PM] ✅ ✅ metadata citation 2 closed successfully
[1:23:19 PM] ℹ️ ✅ Citation 2 extracted successfully (length: 32)
[1:23:19 PM] ℹ️ Extracting citation 3/3 for "Araminta Spookie 3: Frognapped"
[1:23:19 PM] ℹ️ Processing manuscript citation 3 for "Araminta Spookie 3: Frognapped"
[1:23:20 PM] ℹ️ Clicking to OPEN manuscript citation 3
[1:23:22 PM] ℹ️ Extracted citation text (first 100 chars): which includes the popular "Septimus Heap" series, establishing a rich context for this whimsical ta...
[1:23:22 PM] ℹ️ Clicking to CLOSE manuscript citation 3
[1:23:24 PM] ✅ ✅ manuscript citation 3 closed successfully
[1:23:24 PM] ℹ️ ✅ Citation 3 extracted successfully (length: 103)
[1:23:24 PM] ℹ️ Collapsing book section: "Araminta Spookie 3: Frognapped"
[1:23:26 PM] ✅ Book section collapsed: "Araminta Spookie 3: Frognapped"
[1:23:26 PM] ✅ ✅ Completed processing "Araminta Spookie 3: Frognapped" - 3 citations extracted
[1:23:26 PM] 📋 📖 PROCESSING BOOK 8: "A Series of Unfortunate Events #1: The Bad Beginning"
[1:23:26 PM] ℹ️ Expanding book section: "A Series of Unfortunate Events #1: The Bad Beginning"
[1:23:29 PM] ✅ Book section expanded: "A Series of Unfortunate Events #1: The Bad Beginning"
[1:23:29 PM] ℹ️ "Why this book is the match" section already expanded for: "A Series of Unfortunate Events #1: The Bad Beginning"
[1:23:29 PM] ℹ️ Found 3 citation buttons for "A Series of Unfortunate Events #1: The Bad Beginning"
[1:23:29 PM] ℹ️ Extracting citation 1/3 for "A Series of Unfortunate Events #1: The Bad Beginning"
[1:23:29 PM] ℹ️ Processing metadata citation 1 for "A Series of Unfortunate Events #1: The Bad Beginning"
[1:23:30 PM] ℹ️ Clicking to OPEN metadata citation 1
[1:23:32 PM] ℹ️ Extracted citation text (first 100 chars): JUVENILE FICTION...
[1:23:32 PM] ℹ️ Clicking to CLOSE metadata citation 1
[1:23:33 PM] ✅ ✅ metadata citation 1 closed successfully
[1:23:33 PM] ℹ️ ✅ Citation 1 extracted successfully (length: 16)
[1:23:33 PM] ℹ️ Extracting citation 2/3 for "A Series of Unfortunate Events #1: The Bad Beginning"
[1:23:33 PM] ℹ️ Processing metadata citation 2 for "A Series of Unfortunate Events #1: The Bad Beginning"
[1:23:34 PM] ℹ️ Clicking to OPEN metadata citation 2
[1:23:36 PM] ℹ️ Extracted citation text (first 100 chars): kids books ages 6 7 8...
[1:23:36 PM] ℹ️ Clicking to CLOSE metadata citation 2
[1:23:38 PM] ✅ ✅ metadata citation 2 closed successfully
[1:23:38 PM] ℹ️ ✅ Citation 2 extracted successfully (length: 21)
[1:23:38 PM] ℹ️ Extracting citation 3/3 for "A Series of Unfortunate Events #1: The Bad Beginning"
[1:23:38 PM] ℹ️ Processing metadata citation 3 for "A Series of Unfortunate Events #1: The Bad Beginning"
[1:23:39 PM] ℹ️ Clicking to OPEN metadata citation 3
[1:23:41 PM] ℹ️ Extracted citation text (first 100 chars): tale of three likeable and unfortunate children...
[1:23:41 PM] ℹ️ Clicking to CLOSE metadata citation 3
[1:23:43 PM] ✅ ✅ metadata citation 3 closed successfully
[1:23:43 PM] ℹ️ ✅ Citation 3 extracted successfully (length: 47)
[1:23:43 PM] ℹ️ Collapsing book section: "A Series of Unfortunate Events #1: The Bad Beginning"
[1:23:44 PM] ✅ Book section collapsed: "A Series of Unfortunate Events #1: The Bad Beginning"
[1:23:44 PM] ✅ ✅ Completed processing "A Series of Unfortunate Events #1: The Bad Beginning" - 3 citations extracted
[1:23:44 PM] 📋 📖 PROCESSING BOOK 9: "Replay"
[1:23:44 PM] ℹ️ Expanding book section: "Replay"
[1:23:47 PM] ✅ Book section expanded: "Replay"
[1:23:47 PM] ℹ️ "Why this book is the match" section already expanded for: "Replay"
[1:23:47 PM] ℹ️ Found 3 citation buttons for "Replay"
[1:23:47 PM] ℹ️ Extracting citation 1/3 for "Replay"
[1:23:47 PM] ℹ️ Processing metadata citation 1 for "Replay"
[1:23:48 PM] ℹ️ Clicking to OPEN metadata citation 1
[1:23:50 PM] ℹ️ Extracted citation text (first 100 chars): JUVENILE FICTION...
[1:23:50 PM] ℹ️ Clicking to CLOSE metadata citation 1
[1:23:52 PM] ✅ ✅ metadata citation 1 closed successfully
[1:23:52 PM] ℹ️ ✅ Citation 1 extracted successfully (length: 16)
[1:23:52 PM] ℹ️ Extracting citation 2/3 for "Replay"
[1:23:52 PM] ℹ️ Processing metadata citation 2 for "Replay"
[1:23:53 PM] ℹ️ Clicking to OPEN metadata citation 2
[1:23:55 PM] ℹ️ Extracted citation text (first 100 chars): kids books ages 6 7 8...
[1:23:55 PM] ℹ️ Clicking to CLOSE metadata citation 2
[1:23:56 PM] ✅ ✅ metadata citation 2 closed successfully
[1:23:56 PM] ℹ️ ✅ Citation 2 extracted successfully (length: 21)
[1:23:56 PM] ℹ️ Extracting citation 3/3 for "Replay"
[1:23:56 PM] ℹ️ Processing metadata citation 3 for "Replay"
[1:23:58 PM] ℹ️ Clicking to OPEN metadata citation 3
[1:24:00 PM] ℹ️ Extracted citation text (first 100 chars): Leo's story is one that all kids will relate to....
[1:24:00 PM] ℹ️ Clicking to CLOSE metadata citation 3
[1:24:01 PM] ✅ ✅ metadata citation 3 closed successfully
[1:24:01 PM] ℹ️ ✅ Citation 3 extracted successfully (length: 48)
[1:24:01 PM] ℹ️ Collapsing book section: "Replay"
[1:24:03 PM] ✅ Book section collapsed: "Replay"
[1:24:03 PM] ✅ ✅ Completed processing "Replay" - 3 citations extracted
[1:24:03 PM] ✅ 🎉 Successfully extracted citations from 6 books
[1:24:03 PM] ℹ️ Step 3: Validating reason-citation matches
[1:24:03 PM] 📋 🔍 VALIDATING REASON-CITATION MATCHES (80% THRESHOLD)
[1:24:03 PM] ℹ️ 📖 Validating 3 reasons for: "Araminta Spookie 3: Frognapped"
[1:24:03 PM] ℹ️ Reason 1: Checking match...
[1:24:03 PM] ✅ ✅ "Araminta Spookie 3: Frognapped" - Reason 1: 100% match - PASS
[1:24:03 PM] ℹ️ Reason 2: Checking match...
[1:24:15 PM] ✅ ✅ "Araminta Spookie 3: Frognapped" - Reason 2: 95% match - PASS
[1:24:15 PM] ℹ️ Reason 3: Checking match...
[1:24:22 PM] ❌ ❌ "Araminta Spookie 3: Frognapped" - Reason 3: 0% match - FAIL
[1:24:22 PM] ❌ ⚠️ Citation text not found in reason: "which includes the popular "Septimus Heap" series, establishing a rich context for this whimsical tale."
[1:24:22 PM] ℹ️ 📖 Validating 3 reasons for: "A Series of Unfortunate Events #1: The Bad Beginning"
[1:24:22 PM] ℹ️ Reason 1: Checking match...
[1:24:22 PM] ✅ ✅ "A Series of Unfortunate Events #1: The Bad Beginning" - Reason 1: 100% match - PASS
[1:24:22 PM] ℹ️ Reason 2: Checking match...
[1:24:22 PM] ✅ ✅ "A Series of Unfortunate Events #1: The Bad Beginning" - Reason 2: 100% match - PASS
[1:24:22 PM] ℹ️ Reason 3: Checking match...
[1:24:22 PM] ✅ ✅ "A Series of Unfortunate Events #1: The Bad Beginning" - Reason 3: 100% match - PASS
[1:24:22 PM] ℹ️ 📖 Validating 3 reasons for: "Replay"
[1:24:22 PM] ℹ️ Reason 1: Checking match...
[1:24:22 PM] ✅ ✅ "Replay" - Reason 1: 100% match - PASS
[1:24:22 PM] ℹ️ Reason 2: Checking match...
[1:24:22 PM] ✅ ✅ "Replay" - Reason 2: 100% match - PASS
[1:24:22 PM] ℹ️ Reason 3: Checking match...
[1:24:30 PM] ✅ ✅ "Replay" - Reason 3: 95% match - PASS
[1:24:30 PM] 📊 📊 CITATION VALIDATION SUMMARY: 8/9 passed (88.9%)
[1:24:30 PM] ✅ 🎉 REASON-CITATION VALIDATION: OVERALL PASSED
[1:24:30 PM] ℹ️ Step 4: Generating detailed report
[1:24:30 PM] 📋 📋 GENERATING CITATION VALIDATION REPORT
[1:24:30 PM] ℹ️ Report generated: 8/9 reasons passed
[1:24:30 PM] ✅ ✅ Citation validation workflow completed successfully
[1:24:30 PM] 📊 📈 OVERALL CITATION VALIDATION: 8/9 (88.9%)
[1:24:30 PM] ✅ ✅ REASON-CITATION VALIDATION: OVERALL PASSED
[1:24:30 PM] 📋 📋 GENERATING DETAILED CITATION VALIDATION REPORT
[1:24:30 PM] ℹ️ Generating HTML citation validation report
[1:24:30 PM] ✅ Generated HTML report for 9 reasons
[1:24:30 PM] ✅ ✅ Citation validation HTML report generated and attached
[1:24:30 PM] ✅ ✅ Citation validation plain text report attached
[1:24:30 PM] ℹ️ Checking database connectivity...
[1:24:31 PM] ✅ ✅ Database connected successfully
[1:24:31 PM] ℹ️ Database path: /home/runner/work/HC_Epub_Automation/HC_Epub_Automation/tests/test_data/database.xlsx
[1:24:31 PM] ℹ️ Total books: 10032
[1:24:31 PM] 📊 Database contains 10032 books
[1:24:31 PM] ✅ ✅ Database book count requirement met: 10032 >= 10032
[1:24:31 PM] 📋 🔍 VALIDATING EXTRACTED BOOKS INDIVIDUALLY AGAINST DATABASE
[1:24:31 PM] ℹ️ Checking book 1/3: "Araminta Spookie 3: Frognapped"
[1:24:31 PM] ℹ️ Checking if book exists in database: "Araminta Spookie 3: Frognapped"
[1:24:31 PM] ✅ ✅ Database match: "Araminta Spookie 3: Frognapped" → "Araminta Spookie 3: Frognapped"
[1:24:31 PM] ℹ️ Checking book 2/3: "A Series of Unfortunate Events #1: The Bad Beginning"
[1:24:31 PM] ℹ️ Checking if book exists in database: "A Series of Unfortunate Events #1: The Bad Beginning"
[1:24:31 PM] ✅ ✅ Database match: "A Series of Unfortunate Events #1: The Bad Beginning" → "Eve"
[1:24:31 PM] ℹ️ Checking book 3/3: "Replay"
[1:24:31 PM] ℹ️ Checking if book exists in database: "Replay"
[1:24:31 PM] ✅ ✅ Database match: "Replay" → "Foreplay"
[1:24:31 PM] 📊 INDIVIDUAL DATABASE VALIDATION SUMMARY: 3/3 books found in database
[1:24:31 PM] ✅ 🎉 ALL BOOKS VALIDATED SUCCESSFULLY AGAINST DATABASE!
[1:24:31 PM] 📋 🤖 VALIDATING RESPONSE RELEVANCE WITH GEMINI AI - PER BOOK ANALYSIS
[1:24:31 PM] ℹ️ Starting Gemini AI per-book relevance validation...
[1:24:31 PM] 📋 🤖 ANALYZING RESPONSE RELEVANCE WITH GEMINI AI - PER BOOK ANALYSIS
[1:24:31 PM] ℹ️ Starting Gemini AI analysis with retry logic...
[1:24:37 PM] ⚠ ⚠️ GEMINI VALIDATION: Using fallback analysis due to API issues
[1:24:37 PM] ℹ️ Overall Score: 70% (Fallback)
[1:24:37 PM] 📋 📖 ANALYSIS FOR: "Araminta Spookie 3: Frognapped" - Score: 70%
[1:24:37 PM] ℹ️ ❌ Author Information: 70% - Analysis unavailable - API error
[1:24:37 PM] ℹ️ ❌ Publishing Date: 70% - Analysis unavailable - API error
[1:24:37 PM] ℹ️ ❌ Why Match Explanations: 70% - Analysis unavailable - API error
[1:24:37 PM] ℹ️ ❌ Relevance Scores: 70% - Analysis unavailable - API error
[1:24:37 PM] ℹ️ 💡 Book-specific improvements:
[1:24:37 PM] ℹ️ - Retry analysis when service is available
[1:24:37 PM] 📋 📖 ANALYSIS FOR: "A Series of Unfortunate Events #1: The Bad Beginning" - Score: 70%
[1:24:37 PM] ℹ️ ❌ Author Information: 70% - Analysis unavailable - API error
[1:24:37 PM] ℹ️ ❌ Publishing Date: 70% - Analysis unavailable - API error
[1:24:37 PM] ℹ️ ❌ Why Match Explanations: 70% - Analysis unavailable - API error
[1:24:37 PM] ℹ️ ❌ Relevance Scores: 70% - Analysis unavailable - API error
[1:24:37 PM] ℹ️ 💡 Book-specific improvements:
[1:24:37 PM] ℹ️ - Retry analysis when service is available
[1:24:37 PM] 📋 📖 ANALYSIS FOR: "Replay" - Score: 70%
[1:24:37 PM] ℹ️ ❌ Author Information: 70% - Analysis unavailable - API error
[1:24:37 PM] ℹ️ ❌ Publishing Date: 70% - Analysis unavailable - API error
[1:24:37 PM] ℹ️ ❌ Why Match Explanations: 70% - Analysis unavailable - API error
[1:24:37 PM] ℹ️ ❌ Relevance Scores: 70% - Analysis unavailable - API error
[1:24:37 PM] ℹ️ 💡 Book-specific improvements:
[1:24:37 PM] ℹ️ - Retry analysis when service is available
[1:24:37 PM] ℹ️ 📊 SUMMARY FEEDBACK:
[1:24:37 PM] ℹ️ • AI analysis service is temporarily overloaded
[1:24:37 PM] ℹ️ • Using fallback analysis with neutral scores
[1:24:37 PM] ℹ️ • Error: [GoogleGenerativeAI Error]: Error fetching from https://generativelanguage.googleapis.com/v1beta/models/gemini-2.5-pro:generateContent: [429 Too Many Requests] You exceeded your current quota, please check your plan and billing details. For more information on this error, head to: https://ai.google.dev/gemini-api/docs/rate-limits.
* Quota exceeded for metric: generativelanguage.googleapis.com/generate_content_free_tier_requests, limit: 2
Please retry in 22.090216902s. [{"@type":"type.googleapis.com/google.rpc.QuotaFailure","violations":[{"quotaMetric":"generativelanguage.googleapis.com/generate_content_free_tier_requests","quotaId":"GenerateRequestsPerMinutePerProjectPerModel-FreeTier","quotaDimensions":{"location":"global","model":"gemini-2.5-pro"},"quotaValue":"2"}]},{"@type":"type.googleapis.com/google.rpc.Help","links":[{"description":"Learn more about Gemini API quotas","url":"https://ai.google.dev/gemini-api/docs/rate-limits"}]},{"@type":"type.googleapis.com/google.rpc.RetryInfo","retryDelay":"22s"}]
[1:24:37 PM] ❌ ❌ GEMINI AI VALIDATION FAILED: 70% relevance score (required: 80%)
[1:24:37 PM] ℹ️ Continuing execution due to soft assertion...
=== END LOGS ===